1. Field of the Invention
One or more embodiments of the present invention relate generally to computational systems and, more particularly, to methods for allowing a physical machine to operate from an encoding of virtual machine state.
2. Description of the Related Art
Virtualization techniques have a long history in the development of hardware and software systems. Virtual memory, virtual (in-memory) disk storage, and operating system virtual machines are but a few examples of techniques that have long been employed in conventional computational systems. Generally, virtualization techniques seek to abstract underlying resources from layers of functionality (typically software) that employ the resources. Today, partitioning a physical resource for presentation (to multiple resource consumers) as an isolated, but functionally complete instance of the virtualized resource is employed in many modern software systems, including modern operating systems.
While virtualization has long been employed as a method for partitioning individual resources (e.g., in virtual memory or for multi-threaded software executed on a single preemptively scheduled processor), in recent years, virtualization techniques have been employed on a more comprehensive scale. As a result, commercially-available virtualization systems (such as those available from VMware, Microsoft and XenSource) seek to virtualize hardware systems more completely, for example, by presenting an operating system or other software system with a virtualization of underlying hardware.
In general, virtualization technology has proven useful in data center environments, where it has facilitated server consolidation and has been used for server replication, downtime management, fault tolerance and disaster recovery. Virtualization has been applied at the desktop or workstation to facilitate support for multiple operating system instances and to streamline software development and test activities using a series of virtual systems provisioned to correspond to a range of expected or actual deployments.
Despite these uses of virtualization systems, there are situations in which it may be useful to execute software on a traditional, hardware-based platform. For example, application and/or operating system software vendors may require that a bug, fault or error be replicated on a “real” hardware system. In some cases, an ability to migrate from a virtual system to a hardware system may facilitate certain disaster recovery or capacity migration strategies. Alternatively, the mere availability of a method to convert a virtual machine back to a form suitable for execution on a physical machine (if ever necessary) may engender organizational confidence in a decision to deploy production systems using virtualization technology.